# MIPI 摄像头 - imx477 ## 硬件接口 **Quectel Pi H1** 智能主控板共支持两路摄像头 **MIPI CSI** 接口,如下图所示 ```{image} images/image_B2cgbbQI9oiODdxdRQzcNeiTnPe.webp :width: 901px :height: 500px ``` ## 摄像头连接 ## 快速开始 按照下图进行连接,连接时向上拉开连接器的黑色锁扣部分,将 **FPC** 排线插入任意一个 **CSI** 卡槽,注意排线金手指朝向板内金属接触面,按下锁扣,确认 **FPC** 排线稳定没有松动。 ```{image} images/image_QTEYbNJ8MoCq0SxZa0xcMoGunOb.webp :width: 911px :height: 507px ``` 2. 参考 [显示配置](<../../../操作系统/Debian/显示配置/显示配置.md>) 连接显示屏 ## 功能使用 ### 前提条件 摄像头功能运行前需执行本步骤 ssh 终端请输入以下命令 ```bash export GST_PLUGIN_PATH=/usr/lib/gstreamer-1.0:$GST_PLUGIN_PATHexport DISPLAY=:0 FILE_PATH=$(sudo find /run/user/1001 -type f -name '.mutter-*' | head -n 1) if [ -z "$FILE_PATH" ]; thenecho "not found .mutter file"elseecho "found:$FILE_PATH"export XAUTHORITY="$FILE_PATH"echo "XAUTHORITY set as:$XAUTHORITY"fi ``` GNOME 桌面终端请输入以下命令 ```bash export GST_PLUGIN_PATH=/usr/lib/gstreamer-1.0:$GST_PLUGIN_PATH ``` ### 预览 1. 在 **device** 终端中运行以下命令 ```shell sudo -E gst-launch-1.0 -e qtiqmmfsrc name=camsrc ! 'video/x-raw,format=NV12,width=1280,height=720,framerate=30/1' ! autovideosink ``` 2. 此命令以 **720p 30 FPS** 配置启动相机,并将图像传到显示屏预览。如果 **gst** 管道状态更改为 **“PLAYING”**,则表示摄像头正在运行 3. 如果 **2** 个 **CSI** 卡槽同时插入 **2** 个摄像头,则用 **camera=0/1** 来区分,**camera=0** 代表第一个 **CSI** 卡槽,**camera=1** 代表第二个 **CSI** 卡槽,例如打开第二个 **CSI** 卡槽摄像头,可输入以下命令: ```shell sudo -E gst-launch-1.0 -e qtiqmmfsrc name=camsrc camera=1 ! 'video/x-raw,format=NV12,width=1280,height=720,framerate=30/1' ! autovideosink ``` 4. 如果要停止摄像头流,请按下 `CTRL+C` ```{image} images/image_Yg0LbNfZ9og0XbxUNqkcUnuannc.webp :width: 1920px :height: 1080px ``` ## 预览+视频录制 1.在 **device** 终端中运行以下命令: ```shell sudo -E gst-launch-1.0 -e \ qtiqmmfsrc name=camsrc video_1::type=preview ! \'video/x-raw,format=NV12,width=1280,height=720,framerate=30/1,interlace-mode=progressive,colorimetry=bt601' ! \ videocrop top=16 bottom=0 ! \tee name=t ! \ queue ! waylandsink \ t. ! \ queue ! v4l2h264enc capture-io-mode=5 output-io-mode=5 \ extra-controls="controls,video_bitrate=6000000,video_bitrate_mode=0;" ! \ queue ! h264parse ! mp4mux ! filesink location=/opt/11.mp4 ``` 2.此命令以 **720p 30 FPS** 配置启动相机,并在 **h264** 视频编码后将其另存为视频文件。如果 **gst** 管道状态更改为 **“PLAYING”**,则表示摄像头正在运行 3.**MP4** 文件保存在 **/opt/** 目录 4.如果要停止摄像头录制,请按下 `CTRL+C` 5.播放视频文件,请输入以下命令;也可直接在 **GNOME** 桌面双击打开视频播放 ```shell sudo -E gst-launch-1.0 -e filesrc location=/opt/11.mp4 ! qtdemux ! queue ! h264parse ! v4l2h264dec capture-io-mode=5 output-io-mode=5 ! autovideosink ``` ## 预览+拍照 1.在 **device** 终端中运行以下命令: ```shell sudo -E gst-launch-1.0 -e \ qtiqmmfsrc name=camsrc ! \'video/x-raw,format=NV12,width=1280,height=720,framerate=30/1' ! \tee name=t ! \ queue ! videoconvert ! xvimagesink \ t. ! \ queue ! videoconvert ! jpegenc ! \ multifilesink location=shot-%05d.jpg max-files=1 ``` 2.此命令以 **720p 30 FPS** 配置启动相机,并在 **JPEG** 视频编码后将其另存为图像文件。如果 **gst** 管道状态更改为 **“PLAYING”**,则表示摄像头正在运行 3.如果想连拍 **n** 张,可修改参数 **max-files=n** 4.按 `Ctrl+C` 键拍照退出 5.生成文件如下图所示: ```{image} images/image_Wiunb4sUwofgxtxCFYqcqagHnhf.webp :width: 689px :height: 33px ``` 6.查看照片,请输入以下命令;也可直接在 **GNOME** 桌面双击打开照片查看 ```shell sudo -E gst-launch-1.0 filesrc location=/opt/shot-00085.jpg ! jpegdec ! imagefreeze ! autovideosink ```